Para construir el archivo JAR del proyecto, ejecuta el siguiente comando en la línea de comandos:
mvn clean install
El archivo JAR generado estará en el directorio target con un nombre similar a demoSmartJob-[VERSION].jar.
Para Deplegar el servicio, ejecuta el siguente comando en la línea de comandos:
java -jar target/demoSmartJob-[VERSION].jar
Ejemplo:
java -jar target/demoSmartJob-0.0.1-SNAPSHOT.jar
Abre Postman y accede a la siguiente ruta: localhost:8080/v1/. Aqui una [Postman Collection](src/main/resources/Demo Collection.postman_collection.json) para importar.
Los endpoints disponibles son:
- auth:
- sign-up (POST)
- login (POST)
- getAllUsers (GET) (ADDITIONAL)
- getUsersByUUID (GET) (ADDITIONAL)
Los endpoints antes mencionados están detallados en el siguente swagger: Swagger y/o en siguente yaml
Cuando es requerido el token, en Postman se debe selecionar "Authorization", seleccionar en Type "Bearer Token" y colocar el Token generado en los endpoints Sign-up o login
Al momento de correr la aplicación, se crea una base de datos en memoria h2, cuya credenciales son:
username=sa
password=
Las tablas de esta aplicación son:
-
USER
id (KEY) UUID; name; password; email; created; modified; lastLogin; isActive;
Tabla que contiene los usuarios de la Aplicación cuya password se guarda encriptada. el campo UUID es el que se devuelve como id y no mostrar el id de la BD y asi evitar ataques "sql injection"
-
Phone
id (KEY); number; citycode; contrycode;
Tabla que contiene los telefonos de los usuarios registrados.
-
Users_Phones
user_id (OneToMany) phones_id (OneToMany)
Tabla que springboot genera automaticamente y solo contiene la claves foráneas de la las tablas user y phone para reflejar la relacion.
La aplicación tiene una capa de seguridad con Spring Security utilizando JWT.
Aqui estan los diagramas de flujos de los endpoints solicitados:
- Se asume que el campo email de user es el username de la aplicación, segun el siguente Requerimiento : Si caso el correo conste en la base de datos, deberá retornar un error "El correo ya registrado".
- Se asume que los telefonos son opcional al momento de crear un User.
- SpringBoot está diseñado para ejecutar aplicaciones en forma autónoma, incluye un servidor Tomcat embebido. Se puede ejecutar la aplicación directamente, sin necesidad de un servidor Tomcat externo.
- La documentación Swagger se genera una vez que se ejecuta la aplicacion (Despliegue de la aplicación).
- La base de datos se pre-cargan con estos datos para las tablas USER, PHONE y * USERS_PHONES*
- Revisa la documentación detallada de cada endpoint para comprender mejor su funcionamiento y contratos de entrada.
- Por efecto de esta Demo, la version de este es 0.0.1-SNAPSHOT.
- La version de spring boot 3.2.2 presenta Vulnerabilidad en una dependencia (CVE-2023-51074), recomiendan simpre utilizar la versión más reciente de Spring Boot para evitar ataques maliciosos.